package com.elitel.frame.main.dao.ext;

import com.elitel.frame.main.entity.BaseFieldconfig;
import com.elitel.frame.main.entity.ext.BaseFieldconfigExt;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 扩展元数据配置-其他配置mapper
 * @author guoyanfei
 */
public interface ExtBaseFieldconfigMapper {
	
	/**
     *@Description 分页查询其他配置信息
     * @param PageRequestVo<BaseFieldconfig>
     * @return List<BaseFieldconfig>
     * @author guoyanfei
     */
	List<BaseFieldconfigExt> getListBypage(PageRequestVo<BaseFieldconfigExt> pr);
	
	/**
     *@Description 分页查询其他配置信息(Mysql数据库)
     * @param PageRequestVo<BaseFieldconfig>
     * @return List<BaseFieldconfig>
     * @author guoyanfei
     * @date 2017/12/28
     */
	List<BaseFieldconfigExt> getListBypageMysql(PageRequestVo<BaseFieldconfigExt> pr);

	List<BaseFieldconfigExt> getListBypagePG(PageRequestVo<BaseFieldconfigExt> pr);

	/**
     *@Description 查询其他配置信息总记录数
     * @param PageRequestVo<BaseFieldconfig>
     * @return Integer(总记录数)
     * @author guoyanfei
     */
	Integer getListCount(PageRequestVo<BaseFieldconfigExt> pr);
	
	/**
     *@Description 通过表标识删除其他配置信息
     * @param dtconfigid(表标识)
     * @return Integer(删除结果)
     * @author guoyanfei
     */
	Integer deleteFieldConfigbydtconfig(String dtconfigid);
	
	/**
     *@Description 通过表标识查询该表所有的其他配置信息
     * @param dtconfigid(表标识)
     * @return List<BaseFieldconfigExt>集合
     * @author guoyanfei
     */
	List<BaseFieldconfigExt> getAllFieldConfig(String dtconfigid);
	
	/**
     *@Description 通过字段id查询其他配置信息
     * @param fieldid(字段id)
     * @return BaseFieldconfig(其他配置实体)
     * @author guoyanfei
     */
	BaseFieldconfig getFieldconfigByFieldid(String fieldid);
	
	/**
	 * @Description 通过视图标识查询别名集合
	 * @param dtConfigId
	 * @return 别名集合
	 * @author guoyanfei
	 */
	List<String> getFieldConfigAltername(String dtConfigId);
	
	/**
	 * @Description 通过视图标识和关联字段查询外键表别名
	 * @param dtConfigId
	 * @param linkField
	 * @return
	 */
	String getAlternameBydtConfigIdAndLinkField(@Param("dtConfigId") String dtConfigId,@Param("linkField") String linkField);
	
	/**
	 * @Description 通过字段标识和视图标识查询该字段是否配置枚举
	 * @param fieldId
	 * @param dtConfigId
	 * @return BaseFieldconfig实体
	 * @author guoyanfei
	 */
	BaseFieldconfig getFieldEnumeration(@Param("fieldId")String fieldId,@Param("dtConfigId") String dtConfigId);


	/**
	 * TODO: 根据 dtConfigId 批量删除
	 * @param dtConfigId
	 * @return
	 */
	Integer batchDelete(@Param("dtConfigId")String dtConfigId);
}
